# Running Workflows via Events

## Pushing Single Events

For workflows with event triggers, you can push events to the Hatchet API with the `client.event.push` method:

```py
from hatchet_sdk import Hatchet

hatchet = Hatchet()

hatchet.client.event.push(
    "user:create",
    {
        "test": "test"
    }
)
```

The event's input data will be passed to the workflow run as the input, and is retrievable via the `context.workflow_input()` method.

## Pushing Multiple Events

Sometimes we would like to push many events at the same time. You can use the bulk_push `client.event.bulk_push` method:

```py
from hatchet_sdk import Hatchet

hatchet = Hatchet()

events: List[BulkPushEventWithMetadata] = [
    {
        "key": "event1",
        "payload": {"message": "This is event 1"},
        "additional_metadata": {"source": "test", "user_id": "user123"},
    },
    {
        "key": "event2",
        "payload": {"message": "This is event 2"},
        "additional_metadata": {"source": "test", "user_id": "user456"},
    },
    {
        "key": "event3",
        "payload": {"message": "This is event 3"},
        "additional_metadata": {"source": "test", "user_id": "user789"},
    },
]


result =
hatchet.client.event.bulk_push(
    events
)
```
